var Log = require("core_log.js");
var Tool = require("tool.js");
var Auth = require("privacy_auth.js");

/**
 * 获取用户信息
 *  
 * @_withCredentials 获取用户信息成功后带上登录态信息
 * @_success(res, userInfo) 获取数据成功回调
 */
function getUserInfo(_withCredentials, _success) {
  var logCallerName = getUserInfo.name;
  // 官方文档: https://developers.weixin.qq.com/miniprogram/dev/api/wx.getUserInfo.html
  // 说明: 在用户未授权过的情况下调用此接口，将不再出现授权弹窗，会直接进入 fail 回调。在用户已授权的情况下调用此接口，可成功获取用户信息。
  wx.getUserInfo({
    withCredentials: _withCredentials,  // 获取用户信息成功后带上登录态信息
    lang: 'zh_CN',
    // 获取 userInfo 成功
    /*
    success: infoRes => {
      success(infoRes);
      // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      if (app.userInfoReadyCallback) {
        app.userInfoReadyCallback(infoRes)
      }
    },*/
    success: function (res) {
      Log.debug(logCallerName, '获取用户信息成功', res)
      _success(res, res.userInfo);
    },
    // 获取 userInfo 失败, 去检查是否未开启权限
    fail: function (res) {
      Tool.hideLoading();
      const message = '获取用户信息失败, 去检查是否未开启权限';
      Log.error(logCallerName, message, res);
      // wx.hideLoading();
      showInfo(message);
    }
  });
}

/**
 * 显示信息
 */
function showInfo(message) {
  wx.showModal({
    content: message,
    showCancel: false,
    confirmText: '关闭消息'
  })
}

/**
 * 点击授权按钮事件时获取用户信息
 */
function onGetUserInfo(_event, _success) {
  _success(_event.detail.userInfo);
}

module.exports = {
  getUserInfo : getUserInfo
}